home *** CD-ROM | disk | FTP | other *** search
- ;pass: CRYptoGRaPhY
- .386
- locals
- jumps
- .model flat,STDCALL
-
- extrn GetModuleHandleA:Proc ; chiamiamo tutte le API necessarie e definiamole
- extrn MessageBoxA:Proc ; come procedure esterne
- extrn ExitProcess:Proc
- extrn CreateWindowExA:Proc
- extrn RegisterClassA:Proc
- extrn GetMessageA:Proc
- extrn DispatchMessageA:Proc
- extrn TranslateMessage:Proc
- extrn PostQuitMessage:Proc
- extrn DefWindowProcA:Proc
- extrn CloseHandle:Proc
- extrn GetProcAddress:Proc
- extrn PostQuitMessage:Proc
- extrn GetDlgItemTextA:Proc
- extrn GetWindowTextA:Proc
- extrn OpenFile:Proc
- extrn ReadFile:Proc
- extrn SetFilePointer:Proc
- extrn SetFocus:Proc
- extrn SetWindowTextA:Proc
- extrn CloseHandle:Proc
- extrn GetTickCount:Proc
-
- OF_READ = 0000H
- OF_WRITE = 0001H
- OF_READWRITE = 0002H
- OF_DELETE = 0200H
- OF_VERIFY = 0400H ; Used with OF_REOPEN
- OF_SEARCH = 0400H ; Used without OF_REOPEN
- OF_REOPEN = 8000H
- OF_SHARE_DENY_NONE = 0040H
-
- CS_VREDRAW EQU 0001h
- CS_HREDRAW EQU 0002h
- CS_GLOBALCLASS EQU 4000h ; Global window class
- COLOR_WINDOW EQU 10
- NULL EQU 0 ; Questa Φ molto utile ;)
- MB_OK EQU 00000000h
- MB_OKCANCEL EQU 00000001h
- MB_ICONHAND EQU 00000010h
- MB_ICONQUESTION EQU 00000020h
- MB_ICONEXCLAMATION EQU 00000030h
- MB_ICONASTERISK EQU 00000040h
- CW_USEDEFAULT EQU 8000h ; posizione di default della finestra
-
- WS_OVERLAPPED EQU 000000000h
- WS_THICKFRAME EQU 000040000h
- WS_DLGFRAME EQU 000400000h
- WS_BORDER EQU 000800000h
- WS_CAPTION EQU 000C00000h ; WS_BORDER | WS_DLGFRAME
- WS_VISIBLE EQU 010000000h
- WS_CHILD EQU 040000000h
- WS_SYSMENU EQU 000080000h
-
- BS_DEFPUSHBUTTON EQU 0001h
-
- WM_DESTROY EQU 0002h
- WM_COMMAND EQU 0111h
-
- WNDCLASS struc
- clsStyle dd ? ; class style
- clsLpfnWndProc dd ?
- clsCbClsExtra dd ?
- clsCbWndExtra dd ?
- clsHInstance dd ? ; instance handle
- clsHIcon dd ? ; class icon handle
- clsHCursor dd ? ; class cursor handle
- clsHbrBackground dd ? ; class background brush
- clsLpszMenuName dd ? ; menu name
- clsLpszClassName dd ? ; far ptr to class name line50
- WNDCLASS ends
-
- POINT struc
- ptX dd ?
- ptY dd ?
- POINT ends
-
- MSGSTRUCT struc
- msHWND dd ?
- msMESSAGE dd ?
- msWPARAM dd ?
- msLPARAM dd ?
- msTIME dd ?
- msPT POINT <?>
- MSGSTRUCT ends
-
- .data
- wc WNDCLASS <?>
- msg MSGSTRUCT <?>
- IDC_EDIT equ 1000
- AppHWnd dd 0 ; l'handle dell'applicazione
- NewHWnd dd 0 ; l'handle della nostra finestra
- EditHWnd dd 0
- EditHWnd1 dd 0
- FileHWnd dd 0
- ButtonHWnd dd 0
- EditClass db "Edit",0
- WindowCaption db "CaoS - - Coded by Quequero",0
- MSG DB 'OK right pass!!!',0
- WndClassName db "asm",0
- ButtonCaption db "Register",0
- ButtonCaption1 db "About",0
- ButtonClass db "Button",0
- NULL equ 0
- HANDLE dd ?
- BUFFER dd 3 DUP (0)
- TABLE1 DD 987F1452H, 6450B973H, 84A56709H
- TABLE2 DD 10215980H, 5C8F7C66H, 5E8FD61AH
- TABLE3 DD 3A530DFFH, 438F8A0CH, 9A3B5B42H
- TABLE4 DD 50A48684H, 54A6DB12H, 1872B68DH
- TABLE5 DD 8732116AH, 87AB428DH, 3298AF21H
- TABLE6 DD 9832DFBAH, 572168B9H, 1872A8CDH
- TABLE7 DD 6328A5F2H, 89D3E5FAH, 2659A1B8H
- TABLE8 DD 58E5F2A3H, 62F8AA2AH, 129AE5F7H
- TABLE9 DD 81F2A5DCH, 214958A1H, 107B479AH
- TABLE10 DD 268487ADH, 34899AF4H, 389D45ABH
- TABLE11 DD 19422DF8H, 97311D2AH, 263D65A3H
- TABLE12 DD 346D17F3H, 8661A2F2H, 25805EBDH
-
- XORPASS DB 3AH, 0FFH, 1CH, 0ADH, 5AH, 0F8H, 95H, 0CDH, 30H, 25H, 0AEH, 90H
- MASKA DB 85H, 12H, 67H, 25H, 12H, 78H, 36H, 91H, 70H, 35H, 75H, 15H
-
- .code
- Start:
- push 0h
- call GetModuleHandleA ; troviamo l'handle dell'applicazione
- mov [AppHWnd],eax ; salviamolo in EAX
- mov [wc.clsStyle], CS_HREDRAW + CS_VREDRAW + CS_GLOBALCLASS
- mov [wc.clsLpfnWndProc], offset WndProc
- mov [wc.clsCbClsExtra], 0
- mov [wc.clsCbWndExtra], 0
- mov eax, [AppHWnd]
- mov [wc.clsHInstance], eax ; the application handle
- mov [wc.clsHbrBackground], COLOR_WINDOW + 1
- mov dword ptr [wc.clsLpszMenuName], 0 ; no menu
- mov dword ptr [wc.clsLpszClassName], offset WndClassName
- push offset wc ; offset of filled class
- call RegisterClassA ; register it !
-
- ; Creiamo la finestra
- push 0 ; lpParam
- push [AppHWnd] ; hInstance
- push 0 ; menu
- push 0 ; parent hwnd
- push 80 ; height
- push 280 ; width
- push 150 ; y
- push 250 ; x
- push WS_OVERLAPPED OR WS_DLGFRAME OR WS_SYSMENU OR WS_VISIBLE; Style
- push offset WindowCaption ; Title string
- push offset WndClassName ; Class name
- push 0 ; extra style
- call CreateWindowExA
- mov [NewHWnd], eax
-
- ; EditBox Name
- push 0 ; lpParam
- push [AppHWnd] ; hInstance
- push 10h ; ID of the edit box
- push [NewHWnd] ; parent hwnd
- push 25 ; height
- push 160 ; width
- push 10 ; y
- push 5 ; x
- push WS_BORDER OR WS_VISIBLE OR WS_CHILD; Style
- push 0 ; Title string
- push offset EditClass ; Class name
- push 0 ; extra style
- call CreateWindowExA
- mov [EditHWnd], eax
-
- ;Creiamo il primo pulsante
- push 0 ; lpParam
- push [AppHWnd] ; hInstance
- push 20h ; ID of the button
- push [NewHWnd] ; parent hwnd
- push 25 ; height
- push 80 ; width
- push 10 ; y
- push 180 ; x
- push WS_BORDER OR WS_VISIBLE OR WS_CHILD ; Style
- push offset ButtonCaption ; Title string
- push offset ButtonClass ; Class name
- push 0 ; extra style
- call CreateWindowExA
- mov [ButtonHWnd], eax
-
- msg_loop:
- push 0
- push 0
- push 0
- push offset msg
- call GetMessageA
- cmp ax, 0
- je end_loop
- push offset msg
- call TranslateMessage
- push offset msg
- call DispatchMessageA
- jmp msg_loop
- end_loop:
-
- ;=================================================================================
- WndProc proc uses ebx edi esi, hwnd:DWORD, wmsg:DWORD, wparam:DWORD, lparam:DWORD
- cmp [wmsg], WM_DESTROY ; si Φ verificato l'evento WM_DESTROY?
- je wmdestroy ; se si salta alla relativa routine
- cmp [wmsg], WM_COMMAND
- je wmcommand
- push [lparam]
- push [wparam]
- push [wmsg]
- push [hwnd]
- call DefWindowProcA
- ret
-
- wmdestroy:
- push 0
- call PostQuitMessage
- xor eax, eax
- PUSH HANDLE
- CALL CloseHandle
- PUSH NULL ; Terminate program
- CALL ExitProcess
- ret
-
- wmcommand:
- cmp [wparam],20h ; Il primo pulsante Φ stato premuto?
- jne fine
- call check
- fine:
- xor eax,eax
- ret
- WndProc endp
- ;===========================================================================
- check proc uses ebx edi esi, hwnd:DWORD, wmsg:DWORD, wparam:DWORD, lparam:DWORD
-
- PUSHA
- CALL GetWindowTextA, EditHWnd, OFFSET BUFFER, 12
- MOV EAX, OFFSET BUFFER
- LEA EBX, DWORD PTR TABLE1
- MOV EBX, DWORD PTR[EAX+4]
- XOR DWORD PTR[EAX], EBX
- LEA EBX, TABLE2+8
- XOR DWORD PTR[EAX+4], EBX
- LEA EBX, TABLE9+8
- XOR DWORD PTR[EAX], EBX
- LEA EBX, TABLE8+4
- XOR DWORD PTR[EAX+6], EBX
- LEA EBX, TABLE7
- XOR DWORD PTR[EAX+3], EBX
- LEA EBX, TABLE8
- XOR DWORD PTR[EAX+4], EBX
- LEA EBX, TABLE3
- XOR DWORD PTR[EAX], EBX
- LEA EBX, TABLE9
- XOR DWORD PTR[EAX+2], EBX
- LEA EBX, TABLE2+4
- XOR DWORD PTR[EAX], EBX
- LEA EBX, TABLE4+4
- XOR DWORD PTR[EAX+4], EBX
- LEA EBX, TABLE5+8
- XOR DWORD PTR[EAX+7], EBX
- LEA EBX, TABLE6
- XOR DWORD PTR[EAX], EBX
- LEA EBX, TABLE2+4
- XOR DWORD PTR[EAX+3], EBX
- LEA EBX, TABLE6+8
- XOR DWORD PTR[EAX], EBX
- LEA EBX, TABLE7
- XOR DWORD PTR[EAX+2], EBX
- LEA EBX, TABLE1+4
- XOR DWORD PTR[EAX], EBX
- LEA EBX, TABLE8
- XOR DWORD PTR[EAX+1], EBX
- LEA EBX, TABLE12+8
- XOR DWORD PTR[EAX], EBX
- LEA EBX, TABLE9+4
- XOR DWORD PTR[EAX+4], EBX
- LEA EBX, TABLE3+8
- XOR DWORD PTR[EAX], EBX
- LEA EBX, TABLE3
- XOR DWORD PTR[EAX+5], EBX
- LEA EBX, TABLE11
- XOR DWORD PTR[EAX+4], EBX
- LEA EBX, TABLE7+8
- XOR DWORD PTR[EAX+5], EBX
- LEA EBX, TABLE4+8
- XOR DWORD PTR[EAX+7], EBX
- LEA EBX, TABLE6+4
- XOR DWORD PTR[EAX+4], EBX
- LEA EBX, TABLE11+8
- XOR DWORD PTR[EAX], EBX
- LEA EBX, TABLE10
- XOR DWORD PTR[EAX+1], EBX
- LEA EBX, TABLE10+8
- XOR DWORD PTR[EAX+4], EBX
- LEA EBX, TABLE12
- ADD WORD PTR[EAX+10], 8573H
- XOR DWORD PTR[EAX], EBX
- LEA EBX, TABLE4+4
- XOR DWORD PTR[EAX], EBX
- LEA EBX, TABLE10+8
- XOR DWORD PTR[EAX+1], EBX
- LEA EBX, TABLE5
- XOR DWORD PTR[EAX], EBX
- LEA EBX, TABLE1+8
- XOR DWORD PTR[EAX], EBX
- LEA EBX, TABLE10
- XOR DWORD PTR[EAX+3], EBX
- LEA EBX, TABLE9+8
- XOR DWORD PTR[EAX], EBX
- LEA EBX, TABLE5+4
- XOR DWORD PTR[EAX+6], EBX
- LEA EBX, TABLE4
- XOR DWORD PTR[EAX+1], EBX
- LEA EBX, TABLE11+8
- XOR DWORD PTR[EAX+4], EBX
- LEA EBX, TABLE3
- XOR DWORD PTR[EAX], EBX
- LEA EBX, TABLE8+8
- XOR DWORD PTR[EAX+3], EBX
- LEA EBX, TABLE5+4
- XOR DWORD PTR[EAX+5], EBX
- LEA EBX, TABLE5
- XOR DWORD PTR[EAX], EBX
- LEA EBX, TABLE11+8
- XOR DWORD PTR[EAX+5], EBX
- LEA EBX, TABLE7+4
- XOR DWORD PTR[EAX+7], EBX
- LEA EBX, TABLE12
- XOR DWORD PTR[EAX+3], EBX
- LEA EBX, TABLE12
- XOR DWORD PTR[EAX+4], EBX
- LEA EBX, TABLE12+4
- XOR DWORD PTR[EAX+4], EBX
- LEA EBX, TABLE6+8
- AND WORD PTR[EAX+4],97H
- OR DWORD PTR[EAX], 985H
- ROR DWORD PTR[EAX+2], 61H
- XOR ECX, ECX
- LOPPA: MOV BL, BYTE PTR[EAX+ECX]
- MOV BH, BYTE PTR[MASKA+ECX]
- XOR BL, BH
- MOV DL, BYTE PTR[XORPASS+ECX]
- CMP BL, DL
- JNE FUORI
- INC ECX
- CMP ECX, 12
- JNE LOPPA
- PUSH MB_OK OR MB_ICONQUESTION
- PUSH OFFSET WindowCaption
- PUSH OFFSET MSG
- PUSH NULL
- CALL MessageBoxA
- POPA
- JMP msg_loop
-
- check endp
- ;===========================================================================
- FUORI: JMP msg_loop
- End Start
-